package cn.hospital.service;

import cn.hospital.entity.ClinicalDataQuery;
import cn.hospital.entity.MeaningUser;
import cn.hospital.entity.QqueryConditions;
import cn.hospital.entity.QueryAuditManagement;

import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;

public interface ClinicalDataQueryService {
    /**
     * 根据结束时间查询有效的审核数据
     * @param map map集合（结束时间，页码，每页的条数）
     * @return
     */
    List<ClinicalDataQuery> findByEffective(Map<String, Object> map);

    /**
     * 根据结束时间查询有效的审批数据的数量
     * @param map 集合（结束时间）
     * @return
     */
    Long findByCountEffective(Map<String, Object> map);

    /**
     * 根据结束时间查询有效的正在审批数据的数量
     * @param map 集合（结束时间）
     * @return
     */
    Long findByCountEffectiveInExamination(Map<String, Object> map);

    /**
     * 根据结束时间查询无效的审核数据
     * @param map map集合（结束时间，页码，每页的条数）
     * @return
     */
    List<ClinicalDataQuery> findByInvalid(Map<String, Object> map);

    /**
     * 根据结束时间查询无效的审批数据的数量
     * @param map 集合（结束时间）
     * @return
     */
    Long findByCountInvalid(Map<String, Object> map);

    /**
     * 数据查询中，添加查询数据按钮进行最后存放
     * @param session
     * @return
     */
    Integer addBy(HttpSession session);

    /**
     * 删除查询方法，根据查询信息id，删除对应查询信息
     *
     * @param query_conditions_id
     * @return
     */
    Integer deleteBy(String query_conditions_id);

    /**
     * 根据查询信息id，查询该条查询信息
     *
     * @param queryConditionsId
     * @return
     */
    ClinicalDataQuery updateByQueryConditionsId(String queryConditionsId);

    /**
     * 根据页面id，查询条件信息
     *
     * @param applicationInformationId
     * @return
     */
    List<QqueryConditions> selectByApplicationInformationId(String applicationInformationId);

    /**
     * 修改有效时间，根据查询信息id修改有效时间
     *
     * @param queryConditionsId
     * @return
     */
    Integer updateByEndTime(String queryConditionsId, String endtime);

    /*------------------------------------------（审核管理）------------------------------------------*/

    /**
     * 根据查询id，查询审核进度
     *
     * @param clinicalDataQueryId
     * @return
     */
    List<QueryAuditManagement> selectByClinicalDataQueryId(String clinicalDataQueryId);

    /**
     * 查询用户（医生）的信息（id，姓名）
     *
     * @return
     */
    List<MeaningUser> selectMeaningUserBy();

    /**
     * 有效的审核中待审批
     * @param session
     * @return
     */
    List<ClinicalDataQuery> selectByAuditEffective(HttpSession session, Map<String, Object> map);

    /**
     * 有效的审核中待审批的数量
     * @param session
     * @return
     */
    Long selectByAuditEffectiveCount(HttpSession session, Map<String, Object> map);

    /**
     * 有效的审核中审批通过
     *
     * @param session
     * @return
     */
    List<ClinicalDataQuery> selectByApprovedEffective(HttpSession session, Map<String, Object> map);

    /**
     * 有效的审核中审批通过的数量
     *
     * @param session
     * @return
     */
    Long selectByApprovedEffectiveCount(HttpSession session, Map<String, Object> map);

    /**
     * 有效的审核中审批未通过
     *
     * @param session
     * @return
     */
    List<ClinicalDataQuery> selectByFailedPassAuditEffective(HttpSession session, Map<String, Object> map);

    /**
     * 有效的审核中审批未通过的数量
     * @param session
     * @return
     */
    Long selectByFailedPassAuditEffectiveCount(HttpSession session, Map<String, Object> map);

    /**
     * 修改审核状态
     *
     * @param queryAuditManagement
     * @return
     */
    Integer updateByqueryAuditManagementId(QueryAuditManagement queryAuditManagement);
}
